iT邦幫忙

2024 iThome 鐵人賽

0
自我挑戰組

C++自學系列 第 16

Day 16 多型與虛擬函數

  • 分享至 

  • xImage
  •  

多型與虛擬函數
虛擬函數是一種特殊的成員函數,它允許派生類重寫基類的函數,以便在運行時根據對象的具體類型來調用相應的方法。這樣可以實現動態綁定

基本概念
在基類中使用virtual聲明虛擬函數
派生類重寫基類的函數時,通常使用override來增強可讀性
使用基類指針或引用派生類對象時,會根據對象的實際類型來調用正確的方法

虛擬函數的特點
1.動態綁定:虛擬函數允許在運行時確定要調用的函數而不是在編譯時
2.基類指針或引用:虛擬函數通常用於基類指針或引用指向派生類對象的情況,以實現多型
3.虛擬建構子:若類中定義了虛擬函數,建議也將解構子定義為虛擬的,可以正確清理派生類對象
https://ithelp.ithome.com.tw/upload/images/20241014/20168421gfUK3k6ym9.png

virtual void makeSound() const:在基類中定義的虛擬函數,允許派生類重寫該函數
override:在派生類中重寫基類的虛擬函數,標記為override確保函數簽名與基類中的函數匹配
Animal* animal1 = new Dog();:基類的指針指向派生類Dog的物件,這允許在運行時動態綁定調用派生類的makeSound函數

總結:
多型允許基類指針或引用根據實際對象的類型調用派生類的函數,這實現了代碼的靈活性和可擴展性
虛擬函數提供了實現多型的關鍵機制,允許在運行時確定調用哪個版本的函數


上一篇
Day 15 繼承
下一篇
Day 17 抽象類別與純虛擬函數
系列文
C++自學30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言